#pragma once
class Mouse
{
public:
    // static  float getDPI();

    virtual long Bind(long h, int mode) = 0;

    virtual long UnBind() = 0;

    virtual long GetCursorPos(long &x, long &y) = 0;

    virtual long MoveR(int rx, int ry) = 0;

    virtual long MoveTo(int x, int y) = 0;

    virtual long MoveToEx(int x, int y, int w, int h) = 0;

    virtual long LeftClick() = 0;

    virtual long LeftDoubleClick() = 0;

    virtual long LeftDown() = 0;

    virtual long LeftUp() = 0;

    virtual long MiddleClick() = 0;

    virtual long MiddleDown() = 0;

    virtual long MiddleUp() = 0;

    virtual long RightClick() = 0;

    virtual long RightDown() = 0;

    virtual long RightUp() = 0;

    virtual long WheelDown() = 0;

    virtual long WheelUp() = 0;

    static long MOUSE_NORMAL_DELAY;
    static long MOUSE_WINDOWS_DELAY;
    static long MOUSE_DX_DELAY;

protected:
    long _hwnd;
    int _mode;
    int _x, _y;
    float _dpi; // screen dpi
};
